﻿// test_11.17.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

//int main()
//{
//	int a = 5;
//	int b = 3;
//	a = a ^ b;
//	b = a ^ b;
//	a = a ^ b;
//	printf("%d %d", a, b);
//
//
//}
// 以上为交换两个数的数值（不使用临时变量）


//int main()
//{
//	int n;
//	scanf("%d", &n);
//	int count = 0;
//	for (int i = 0;i <= 31;i++)
//	{
//		if ((n >> i) & 1 == 1)
//		{
//			count++;
//		}
//	}
//	int ret = count;
//	printf("%d", ret);
//}
//以上程序为求一个整形数的2进制位中1的个数


//int main()
//{
//	int n;
//	scanf("%d", &n);
//	int count = 0;
//	while(n)
//	{
//		n = n & (n - 1);
//		count++;
//	}
//	int ret = count;
//	printf("%d", ret);
//}
//上述程序为求一个整形数的2进制位中1的个数


//int main()
//{
//	int n;
//	scanf("%d",&n);
//	if ((n & (n - 1) )== 0)
//	{
//		printf("是2的次幂");
//	}
//	else
//		printf("不是2的次幂");
//	
//}
//上述程序为判断一个正整数是否为2的次幂

//void Print(int n)
//{
//	int i = 0;
//	printf("奇数位打印：");
//	for (i = 30;i >= 0;i -= 2)
//	{
//		printf("%d ", (n >> i) & 1);
//	}
//	printf("\n");
//	printf("偶数位打印: ");
//	for (i = 31;i >= 0;i -= 2)
//	{
//		printf("%d ", (n >> i) & 1);
//	}
//	
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	Print(n);
//	return 0;
//}
//上述程序为分别打印一个数的2进制位中的奇数位和偶数位

//int main()
//{
//	int n,m;
//	scanf("%d %d", &n, &m);
//	int count = 0;
//	for (int i = 0;i < 32;i++)
//	{
//		if(((n >> i) & 1) != ((m >> i) & 1))
//		{
//			count++;
//		}
//			
//	}
//	printf("两个数的二进制序列中有%d个比特位不同\n", count);
//}
//上述程序为求两个数的二进制序列中有多少个比特位不同（移位后逐末位判断）

//int main()
//{
//	int n, m;
//	scanf("%d %d", &n, &m);
//	int tmp = n ^ m;
//	int count = 0;
//	while (tmp)
//	{
//		tmp = tmp & (tmp - 1);
//		count++;
//	}
//	printf("两个数的二进制序列中有%d个比特位不同\n", count);
//}
//上述程序为求两个数的二进制序列中有多少个比特位不同（异或后，判断1的个数，即相异位数的个数）




